home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Freeware 1998 June
/
SGI Freeware 1998 June.iso
/
dist
/
fw_ATxgopher.idb
/
usr
/
freeware
/
src
/
xgopher.1.3
/
sc_text.c.z
/
sc_text.c
Wrap
C/C++ Source or Header
|
1998-01-21
|
3KB
|
146 lines
/* sc_text.c
gopher item subclass procedures for text */
/*---------------------------------------------------------------*/
/* Xgopher version 1.3 08 April 1993 */
/* version 1.2 20 November 1992 */
/* version 1.1 20 April 1992 */
/* version 1.0 04 March 1992 */
/* X window system client for the University of Minnesota */
/* Internet Gopher System. */
/* Allan Tuchman, University of Illinois at Urbana-Champaign */
/* Computing and Communications Services Office */
/* Copyright 1992, 1993 by */
/* the Board of Trustees of the University of Illinois */
/* Permission is granted to freely copy and redistribute this */
/* software with the copyright notice intact. */
/*---------------------------------------------------------------*/
#include "conf.h"
#include "osdep.h"
#include "globals.h"
#include "gopher.h"
#include "util.h"
#include "status.h"
#include "appres.h"
#include "text.h"
#include "sc_text.h"
#include "sc_textP.h"
/* getFile
access the Ascii text file as required by the selected item */
static BOOLEAN
getFile(gi, indexString)
gopherItemP gi;
char *indexString;
{
char errorString[MESSAGE_STRING_LEN];
char tempName[PATH_NAME_LEN];
int tempFD;
BOOLEAN okSoFar;
getTempFile(tempName);
if ((tempFD = open(tempName, O_WRONLY | O_CREAT, TMP_FILE_MODE)) < 0) {
perror("getFile");
sprintf(errorString,
"Cannot open the temporary file %s", tempName);
showError(errorString);
fprintf (stderr, "%s\n", errorString);
return FALSE;
}
okSoFar = GI_copyFromNet(tempFD, gi, "Getting text for display");
close(tempFD);
/* check for cancel */
if (! okSoFar ) {
unlink(tempName);
return FALSE;
}
showFile(gi, USER_STRING(gi), tempName, indexString);
return TRUE;
}
/* GIText_init
initialize text file class - host access list and prefix. */
void
GIText_init()
{
GU_makePrefix(prefixText, appResources->prefixFile);
textHostList = GU_createAccessList(appResources->textServers);
GU_registerNewType(A_FILE, &textSubclass);
return;
}
/* GIText_done
done with text file class - get rid of leftover temp files. */
void
GIText_done()
{
cleanUpTextProc();
return;
}
/* GIText_init
restarts text file class - remove popups and get rid of temp files. */
void
GIText_restart()
{
removeAllText();
cleanUpTextProc();
return;
}
/* GIText_access
check the accessability of a text file selection */
BOOLEAN
GIText_access(gi)
gopherItemP gi;
{
BOOLEAN result;
if (textHostList == NULL || GU_checkAccess(gi->host, textHostList)) {
result = TRUE;
}else {
result = FALSE;
}
return result;
}
/* GIText_process
process a text file selection */
BOOLEAN
GIText_process(gi)
gopherItemP gi;
{
BOOLEAN result;
result = getFile(gi, getCurrentDirIndex());
return result;
}